Loading in the data

data_all <-  read_csv("../../../reports/runtimes_big.csv", col_types = cols(num_students = col_factor(), num_projects = col_factor(), proj_pref_type = col_factor(), mechanism = col_factor()))

data_singleton <- data_all %>% filter(proj_pref_type == "singleton")
data_p1 <- data_all %>% filter(proj_pref_type == "linear_perturbed_1")
data_p4 <- data_all %>% filter(proj_pref_type == "linear_perturbed_4")
data_r <- data_all %>% filter(proj_pref_type == "random")


colors_mechanism = c("#7a5195", "#ffa600")

Some initial playing with scatterplot3d

library(scatterplot3d)

plotit <- function(data) {
    
    #colors <- c("#003f5c", "#58508d", "#bc5090", "#ff6361", "#ffa600")
    colors = c("#003f5c" ,"#7a5195" ,"#ef5675" ,"#ffa600")
    colors_mechanism = c("#7a5195", "#ffa600")
    
    shapes <- c(15, 16, 17, 18)
    
    scatterplot3d(
        x = data$num_projects,
        y = data$num_students,
        z = data$duration_ms / 1000, 
        pch = shapes[factor(data$proj_pref_type)],
        color = colors_mechanism[factor(data$mechanism)]
        #,zlim = c(0,15)
    )
    
}

plotit(filter(data_all, num_slots == 1))


plotit(data_singleton)

plotit(data_p1)

plotit(data_p4)

plotit(data_r)

These are some other plots

Using plotly


library(plotly)
Warning: package ‘plotly’ was built under R version 4.0.5

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
plot_data <- function(data) {
    fig <- plot_ly(data, x = ~num_projects, y = ~num_students, z = ~(duration_ms / 1000), color = ~as.factor(mechanism), colors = colors_mechanism) %>%
        add_markers(size=1) %>% 
        layout(
            scene = list(
                xaxis = list(title = "# projects"),
                yaxis = list(title = "# students"),
                zaxis = list(title = "duration (sec)", type = "log")
            ),
            legend = list(orientation = "h")
        )
    
    return(fig)
}

plot_data(data_all)
plot_data(data_singleton)
plot_data(data_p1)
plot_data(data_p4)
plot_data(data_r)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KYGBge3IgaW5jbHVkZT1GQUxTRX0NCmluc3RhbGwucGFja2FnZXMoInBsb3RseSIpDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQpgYGANCiMjIExvYWRpbmcgaW4gdGhlIGRhdGENCmBgYHtyfQ0KZGF0YV9hbGwgPC0gIHJlYWRfY3N2KCIuLi8uLi8uLi9yZXBvcnRzL3J1bnRpbWVzX2JpZy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKG51bV9zdHVkZW50cyA9IGNvbF9mYWN0b3IoKSwgbnVtX3Byb2plY3RzID0gY29sX2ZhY3RvcigpLCBwcm9qX3ByZWZfdHlwZSA9IGNvbF9mYWN0b3IoKSwgbWVjaGFuaXNtID0gY29sX2ZhY3RvcigpKSkNCg0KZGF0YV9zaW5nbGV0b24gPC0gZGF0YV9hbGwgJT4lIGZpbHRlcihwcm9qX3ByZWZfdHlwZSA9PSAic2luZ2xldG9uIikNCmRhdGFfcDEgPC0gZGF0YV9hbGwgJT4lIGZpbHRlcihwcm9qX3ByZWZfdHlwZSA9PSAibGluZWFyX3BlcnR1cmJlZF8xIikNCmRhdGFfcDQgPC0gZGF0YV9hbGwgJT4lIGZpbHRlcihwcm9qX3ByZWZfdHlwZSA9PSAibGluZWFyX3BlcnR1cmJlZF80IikNCmRhdGFfciA8LSBkYXRhX2FsbCAlPiUgZmlsdGVyKHByb2pfcHJlZl90eXBlID09ICJyYW5kb20iKQ0KDQoNCmNvbG9yc19tZWNoYW5pc20gPSBjKCIjN2E1MTk1IiwgIiNmZmE2MDAiKQ0KYGBgDQoNCiMjIFNvbWUgaW5pdGlhbCBwbGF5aW5nIHdpdGggc2NhdHRlcnBsb3QzZA0KYGBge3J9DQpsaWJyYXJ5KHNjYXR0ZXJwbG90M2QpDQoNCnBsb3RpdCA8LSBmdW5jdGlvbihkYXRhKSB7DQogICAgDQogICAgI2NvbG9ycyA8LSBjKCIjMDAzZjVjIiwgIiM1ODUwOGQiLCAiI2JjNTA5MCIsICIjZmY2MzYxIiwgIiNmZmE2MDAiKQ0KICAgIGNvbG9ycyA9IGMoIiMwMDNmNWMiICwiIzdhNTE5NSIgLCIjZWY1Njc1IiAsIiNmZmE2MDAiKQ0KICAgIGNvbG9yc19tZWNoYW5pc20gPSBjKCIjN2E1MTk1IiwgIiNmZmE2MDAiKQ0KICAgIA0KICAgIHNoYXBlcyA8LSBjKDE1LCAxNiwgMTcsIDE4KQ0KICAgIA0KICAgIHNjYXR0ZXJwbG90M2QoDQogICAgICAgIHggPSBkYXRhJG51bV9wcm9qZWN0cywNCiAgICAgICAgeSA9IGRhdGEkbnVtX3N0dWRlbnRzLA0KICAgICAgICB6ID0gZGF0YSRkdXJhdGlvbl9tcyAvIDEwMDAsIA0KICAgICAgICBwY2ggPSBzaGFwZXNbZmFjdG9yKGRhdGEkcHJval9wcmVmX3R5cGUpXSwNCiAgICAgICAgY29sb3IgPSBjb2xvcnNfbWVjaGFuaXNtW2ZhY3RvcihkYXRhJG1lY2hhbmlzbSldDQogICAgICAgICMsemxpbSA9IGMoMCwxNSkNCiAgICApDQogICAgDQp9DQoNCnBsb3RpdChmaWx0ZXIoZGF0YV9hbGwsIG51bV9zbG90cyA9PSAxKSkNCg0KcGxvdGl0KGRhdGFfc2luZ2xldG9uKQ0KcGxvdGl0KGRhdGFfcDEpDQpwbG90aXQoZGF0YV9wNCkNCnBsb3RpdChkYXRhX3IpDQoNCmBgYA0KDQpUaGVzZSBhcmUgc29tZSBvdGhlciBwbG90cw0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQoNCmRhdGFfYWxsIDwtIHJlYWRfY3N2KCIuLi8uLi8uLi9yZXBvcnRzL3J1bnRpbWVzX2JpZy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKG51bV9zdHVkZW50cyA9IGNvbF9mYWN0b3IoKSwgbnVtX3Byb2plY3RzID0gY29sX2ZhY3RvcigpLCBwcm9qX3ByZWZfdHlwZSA9IGNvbF9mYWN0b3IoKSkpDQoNCiN1bmlxdWUoZGF0YV9hbGwkbnVtX3N0dWRlbnRzKQ0KDQpmb3IgKHByZWZfZGlzdCBpbiBsZXZlbHMoZGF0YV9hbGwkcHJval9wcmVmX3R5cGUpKSB7DQogICAgZGF0YV9maWx0ZXJlZCA8LSBkYXRhX2FsbCAlPiUgZmlsdGVyKG51bV9zdHVkZW50cyA9PSA4NjAgJiBwcm9qX3ByZWZfdHlwZSA9PSBwcmVmX2Rpc3QpDQogICAgI3ByaW50KGRhdGFfZmlsdGVyZWQpDQogICAgDQogICAgcGxvdCA8LSBnZ3Bsb3QoZGF0YV9maWx0ZXJlZCwgYWVzKHggPSBmYWN0b3IobnVtX3Nsb3RzKSwgeSA9IChkdXJhdGlvbl9tcykpLCBncm91cCA9IG51bV9wcm9qZWN0cykgKw0KICAgICAgICAgICAgICAgIGdlb21fYm94cGxvdCgpICsNCiAgICAgICAgICAgICAgICBnZW9tX2ppdHRlcihwb3NpdGlvbj1wb3NpdGlvbl9qaXR0ZXIoMC4yKSkgKw0KICAgICAgICAgICAgICAgIGZhY2V0X3dyYXAodmFycyhudW1fcHJvamVjdHMpKSArDQogICAgICAgICAgICAgICAgeWxpbSgwLCAyMDAwMCkgKyANCiAgICAgICAgICAgICAgICBsYWJzKHRpdGxlID0gcHJlZl9kaXN0KQ0KICAgIHByaW50KHBsb3QpDQp9DQpgYGANCg0KIyMgVXNpbmcgcGxvdGx5DQpgYGB7cn0NCg0KbGlicmFyeShwbG90bHkpDQoNCnBsb3RfZGF0YSA8LSBmdW5jdGlvbihkYXRhKSB7DQogICAgZmlnIDwtIHBsb3RfbHkoDQogICAgICAgICAgICBkYXRhLA0KICAgICAgICAgICAgeCA9IH5udW1fcHJvamVjdHMsIHkgPSB+bnVtX3N0dWRlbnRzLCB6ID0gfihkdXJhdGlvbl9tcyAvIDEwMDApLA0KICAgICAgICAgICAgY29sb3IgPSB+YXMuZmFjdG9yKG1lY2hhbmlzbSksY29sb3JzID0gY29sb3JzX21lY2hhbmlzbSkgJT4lDQogICAgICAgIGFkZF9tYXJrZXJzKHNpemU9MSkgJT4lIA0KICAgICAgICBsYXlvdXQoDQogICAgICAgICAgICBzY2VuZSA9IGxpc3QoDQogICAgICAgICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIiMgcHJvamVjdHMiKSwNCiAgICAgICAgICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiIyBzdHVkZW50cyIpLA0KICAgICAgICAgICAgICAgIHpheGlzID0gbGlzdCh0aXRsZSA9ICJkdXJhdGlvbiAoc2VjKSIsIHR5cGUgPSAibG9nIikNCiAgICAgICAgICAgICksDQogICAgICAgICAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gImgiKQ0KICAgICAgICApDQogICAgDQogICAgcmV0dXJuKGZpZykNCn0NCg0KcGxvdF9kYXRhKGRhdGFfYWxsKQ0KcGxvdF9kYXRhKGRhdGFfc2luZ2xldG9uKQ0KcGxvdF9kYXRhKGRhdGFfcDEpDQpwbG90X2RhdGEoZGF0YV9wNCkNCnBsb3RfZGF0YShkYXRhX3IpDQpgYGANCg0KDQo=